<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>


    <script>
        // 面向对象：直接量,工厂模式,构造函数,原型
        // 要求：
            // 统计字符串字符中字符出现的次数

        // 思考:
            // 如何往对象中添加数据
            // 如何往对象中添加方法
            // 属性和方法

        // 编码:
        // 定义对象(命名空间)
        var space = {
            str: "hello world",
            letter: "",
            count: 0,
        }

        // 定义空对象
        var space = {};
        // 添加属性
        space.str = "hello world";
        space.letter = "";
        space.count = 0;
        space.arr =  space.str.split("");
        // 添加方法
        // this 是指针变量,由调用者决定this指向
        space.init = function(){
            // console.log(this === space);// true
            // 定义变量 记录切割成的数组
            var data = this.arr;
            // 空对象
            var obj = {};
            // 循环数组
            for(var i = 0 ; i < data.length ; i ++){
                   // 判断字符是否为空格字符
                    if(data[i]==" "){
                        // 是，跳过当前循环
                        continue;
                    }
                    // console.log(arr[i]);
                    // 判断 对象obj是否存在 "h" 这个属性
                    if(obj[data[i]] == undefined){
                        // 继续往obj添加一个对象
                        obj[data[i]] = {
                            code : data[i],
                            num : 1
                        }
                    }else {
                        // 设置obj对象重复出现的属性 自增一
                        obj[data[i]].num +=  1;
                    }
            }
            // console.log(obj);
            // 循环记录每个字符出现的次数的对象
            for(var key in obj){
                // 判断,次数做比较
                if(this.count < obj[key].num){
                    this.count =  obj[key].num;
                    this.letter = obj[key].code;
                }
            }
        }

        // 调用space的init方法
        space.init();
        console.log("字符:",space.letter);
        console.log("次数:",space.count);


        // var space_1 = {};
        // space_1.str = "playing game";
        // space_1.letter = "";
        // space_1.count = 0;
        // space_1.arr = space_1.str.split("");
        // space_1.init = function() {
        //     var data = this.arr;
        //     // console.log(data);
        //      var obj = {};
        //     for(var i = 0 ; i < data.length ; i ++) {
        //         if(data[i] == " ") {
        //             continue;
        //         }
        //         if(obj[data[i]] == undefined) {
        //             obj[data[i]] = {
        //                 code : data[i] ,
        //                 num : 1
        //             }
        //         }else {
        //             obj[data[i]].num  += 1 ; 
        //         }
        //     }
        //     for(var key in obj) {
        //         if(this.count < obj[key].num) {
        //             this.count = obj[key].num;
        //             this.letter = obj[key].code;
        //         }
        //     }
        // }

        // space_1.init();
        // console.log(space_1.letter);
        // console.log(space_1.count);
        
    </script>
</body>
</html>